// app 模块，它控制应用程序的事件生命周期。
// BrowserWindow 模块，它创建和管理应用程序 窗口。
// ipcMain 主进程
const { app, BrowserWindow ,ipcMain} = require('electron')
const  path = require('path')
// 第一个参数为事件对象 第二个参数为传过来的参数
const  fileSave =(e,data)=>{ //单进程渲染向主进程通信
    console.log("file-save",data);  
}
const fileSaip = ()=>{ //双进程渲染向主进程通信
    // 在这里写主进程要做的事情 然后返回回去
    return "hello"
}

// 当 Electron 完成了初始化并且准备创建浏览器窗口的时候，该方法将被调用。
const createWindow = () => {
    const win = new BrowserWindow({
      width: 800, // 创建的窗口宽度
      height: 600, // 创建的窗口高度
      webPreferences: {
         preload: path.resolve(__dirname, './preload.js')
      }
    //   autoHideMenuBar:true, //隐藏菜单栏
    })
    ipcMain.on("file-save",fileSave)
    ipcMain.handle("file-saip",fileSaip)
    win.loadFile('./page/home/index.html') //加载文件
    setTimeout(()=>{  // 延迟一秒后向子进程发送消息
      win.webContents.send('hello',"你好啊")
    },1000)
    // win.loadURL(" https://www.baidu.com/") //加载网址
    
    
  }
// 当 Electron 完成了初始化并且准备创建浏览器窗口的时候，该方法将被调用。
  app.whenReady().then(() => {
    createWindow()

    
  
  })
  console.log(process.versions.electron);
  
  app.on('window-all-closed', () => {
    // macOS 中，除非用户用 Cmd + Q 确定地退出，否则绝大部分应用及其菜单栏会保持激活。
    // 当所有窗口关闭的时候，退出应用程序。
    if (process.platform !== 'darwin') app.quit()
  })
  // macOS中，当点击dock图标时没有已打开的应用窗口时，通常在应用程序中重建一个窗口
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })